
/* 
 * File:   RandomNode.h
 * Author: jcrada
 *
 * Created on April 4, 2009, 6:08 PM
 */

#ifndef _RANDOMNODE_H
#define	_RANDOMNODE_H

#include "RandomGsl.h"
#include "TerminalNode.h"
#include "FunctionNode.h"
#include "IdNode.h"

namespace jcrada{
    class RandomNode{
    private:
        RandomGsl _rnd_terminal;
        RandomGsl _rnd_function;
        RandomGsl _random;
    public:
        RandomNode();
        virtual ~RandomNode();

        //Rango [min, max)
        virtual TerminalNode* nextTerminal(int min, int max);

        virtual FunctionNode* nextFunction(int arity);

        virtual Node* next(int min, int max, int arity);
    };
}
#endif	/* _RANDOMNODE_H */

